The invention relates to the field of software applications allowing users to create, modify, and manipulate data. Many software applications allow users to create, modify, or manipulate data. These applications are referred to generally herein as data applications. For example, computer graphics software applications allow users to create three-dimensional models of objects, specify animation, lighting, and shading data, and generate one or more rendered images as a result.
Regardless of the type of application and data, users often create, modify, and manipulate data over multiple iterations. Typically, users provide commands to the application, which in turn performs one or more operations to create, modify, or otherwise manipulate data. In addition to refining the data through multiple iterations, users frequently backtrack or revert to previous versions of data to correct mistakes or to explore alternatives. Many data applications include undo and redo functionality. Typically, the undo function allows users to reverse the effects of a sequence of one or more previously performed operations. Following the reversal of a sequence of one or more previously performed operations, a typical redo function re-executes one or more of the sequence of reversed operations.
One problem with the undo and redo operations of prior data applications is that the undo/redo queue is typically linear. Users may undo any sequence of operations; however, if a user performs one or more new or additional operations following the reversal of a sequence of operations, this sequence of operations is removed from the undo/redo queue and cannot be re-executed using the redo command.